属性(Property)和字段(Field)的比较
虽然不是必须的,但是建议将property设置为私有或者可继承,而通过Field来改变property。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebApplication1
{
public class TypeDemo
{
public void HahaGetType()
{
var GG = new { htc = "haha", yy = "yoyo" };
}
internal string internalFiled { get; set; }
public string publicPropertyWithPriSet { get; private set; }
public string publicProperty;
private string privateFiled;
string defaultFiled;
static void mm()
{
mahui m = new mahui { name = "mahui", age=14 };
}
private class mahui
{
public string name { get; set; }
public int age{get;set;}
}
}
}
编译后的结果为:
其中mahui class中的Field设置是简化后的get和set,编译后将自动产生两个私有property,然后调用set和get来改变值。
不管是Public的还是protected的Field,里面的get和set方法至少有一个要是缺省的访问修饰,另一个可以是缺省的,也可以是访问范围小于当前的,比如public修饰的可以将get或者set(两者最多有一个)修饰为protected或者private
使用自动生成字段,get和set必须成对出现,否则需要写成
Public string field { get{ return _field; } } Private string _field;
如果需要使用自动生成字段来实现相同功能,则可以这样写:
Public string field
{
get;private set;
}