C# 详细讲解代码 get; set; 和public DateTime time get; set; 的意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 详细讲解代码 get; set; 和public DateTime time get; set; 的意思?相关的知识,希望对你有一定的参考价值。

1、属性的语法
set;get;是属性修饰符,也是C#2.0提供的语法糖,
在C#1.0版本中,属性是需要构造的。
如:
private int _ID;
public int ID

set_ID = value;
getreturn _ID;


上面的写法和
public int IDset;get; 效果是一样的。

2、属性的意义。
特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集、类型、方法、属性等)相关联。特性与程序实体关联后,即可在运行时使用名为“反射”的技术查询特性。
详见:https://msdn.microsoft.com/zh-cn/library/z0w1kczw(v=vs.140).aspx

通俗的说,

public class Car

public int CarNumset;get;
public string Ownerset;get;
public DateTime BuyTimeset;get;

上面这个代码定义了一辆车, 车有3个属性, 分别是carnum车牌号,owner 车主,buytime 购买时间,(DateTime是C#里的时间类型)
每次你调用的时候,
var mycar = new Car(); 即可实例化一个车, 车子的三个属性你都可以进行操作。
参考技术A 在面向对象语言中(C++,java,C#等)get和set是对象属性特有的两个方法,属性是对字段的封装,是为了程序数据的安全性考虑的。
简单来说,字段有两种操作权限,就是获取和修改,就分别对应的是get和set方法了,可以通过制定get和set方法来限定字段的访问权限。
在C#中,有个蛋疼的称呼,叫做访问器。

get 访问器
get 访问器体与方法体相似。它必须返回属性类型的值。执行 get 访问器相当于读取字段的值。
public int IDget;set
然后在实现里面
get

return 200;


就得到了ID为200.
set 访问器
set 访问器与返回 void 的方法类似。它使用称为 value 的隐式参数,此参数的类型是属性的类型。
也就说你声明什么类型,就要传递什么类型的参数
public int IDget;set
让需要调用时,直接使用:
test.ID =200;
这样你就把200设置成了你传递的ID。

为 C# 中可变的属性设置默认值 [重复]

【中文标题】为 C# 中可变的属性设置默认值 [重复]【英文标题】:Setting a default value for property that is mutable in C# [duplicate] 【发布时间】:2016-02-17 16:32:44 【问题描述】:

我有财产

public int active  get; set; 

我的数据库中的默认值为 1。如果未另行指定,我希望此属性默认为 1

public partial class test

    public int Id  get; set; 
    public string test1  get; set; 
    public int active  get; set; 

我看到在 c# 6 中你可以做到

public int active  get; set;  = 1

但我没有使用 c# 6 :(。 谢谢你的建议。 (对于 c#/OOP 来说非常非常新)

【问题讨论】:

但我没有使用 c# 吗?你的意思是说:但我没有使用 c# 6.0? 无论如何,如果您是6.0之前的版本,请使用构造函数进行初始化。 所以添加一个default constructor 并在那里初始化它。顺便说一句,你真的想使用partial 类吗?如果你需要一个分部类,那是因为一些类定义是自动生成的。是这样吗?如果不是,使用partial 是一种滥用,可能表明一个类承担了太多责任(并且已经变得太大)。对于手写代码,部分定义类只会掩盖代码的意图。 已编辑,未使用 c# 6,抱歉 【参考方案1】:

只需在构造函数中设置即可:

public partial class Test

    public int Id  get; set; 
    public string Test1  get; set; 
    public int Active  get; set; 

    public Test()
    
        Active = 1;
    

我认为这比仅仅为了默认而避免自动实现的属性更简单......

【讨论】:

【参考方案2】:

在构造函数中初始化它:

public partial class Test

    public int Active  get; set; 

    public Test()
    
        Active = 1;
    

【讨论】:

【参考方案3】:
// option 1:  private member
    public partial class test
    
        private int _active = 1;
        public int Id  get; set; 
        public string test1  get; set; 
        public int active 
         
            get return _active;  
            set _active = value;  
        
    

// option 2:  initialize in constructor

    public partial class test
    
        public test()
        
            active = 1;
        
        public int Id  get; set; 
        public string test1  get; set; 
        public int active  get; set; 
    

【讨论】:

太棒了,现在我看到了get set的实用程序,几天前就开始使用c#了 它变得更好了。属性非常强大。你可以做的不仅仅是一个简单的get; set;,甚至不仅仅是一个简单的作业,【参考方案4】:

在 C#6 之前的版本中执行此操作的默认方法要冗长得多,但它只是语法 - 这是等效的:

public class Foo

    private int _bar = 1;
    public int Bar
    
        get  return _bar; 
        set  _bar = value; 
    

【讨论】:

非常感谢,不胜感激

以上是关于C# 详细讲解代码 get; set; 和public DateTime time get; set; 的意思?的主要内容,如果未能解决你的问题,请参考以下文章

为 C# 中可变的属性设置默认值 [重复]

详细讲解23种设计模式

C# 字符串常用方法的详细讲解和应用

C#里类的get和set方法编写和调用

c#属性的get和set的用法

001:C# 中 get set 简写存在的陷阱