相关疑难解决方法(0)

C#3.0+中属性和字段的区别

我意识到它似乎是C#中字段和属性之间有什么区别的重复但我的问题略有不同(从我的观点来看):

一旦我知道了

  • 我不会将我的课程用于"仅适用于属性的技术"和
  • 我不会在getter/setter中使用验证代码.

是否有任何区别(风格/未来发展除外),如设置属性时的某种控制类型?

是否有任何额外的区别:

public string MyString { get; set; }
Run Code Online (Sandbox Code Playgroud)

public string myString;
Run Code Online (Sandbox Code Playgroud)

(我知道,第一个版本需要C#3.0或更高版本,并且编译器会创建私有字段.)

c# field properties automatic-properties c#-3.0

138
推荐指数
6
解决办法
7万
查看次数

C#3.0中自动属性和公共字段之间的区别

我无法理解为什么C#3.0中存在自动实现的属性语言功能.

你说的时候有什么不同

public string FirstName;
Run Code Online (Sandbox Code Playgroud)

public string FirstName { get; set; }
Run Code Online (Sandbox Code Playgroud)

c# c#-3.0

17
推荐指数
3
解决办法
5854
查看次数

成员变量和成员属性之间的区别?

在某些情况下,我在我的类顶部声明成员变量,然后声明一个属性来访问或设置该成员变量,但我问自己,如果该变量只是从内部进行访问和设置,那么该属性是否必要这个类而不是其他,所以使用属性访问和设置成员变量的优点是什么,而不是直接对成员变量本身进行操作.这是一个例子:

public class Car
{

    int speed; //Is this sufficient enough if Car will only set and get it.

    public Car(int initialSpeed)
    {
        speed = initialSpeed;
    }

    //Is this actually necessary, is it only for setting and getting the member
        //variable or does it add some benefit to it, such as caching and if so,
        //how does caching work with properties.
    public int Speed 
    {
        get{return speed;}
        set{speed = value;}
    }

        //Which is better?
        public void MultiplySpeed(int multiply)
        {
            speed …
Run Code Online (Sandbox Code Playgroud)

c# oop

16
推荐指数
2
解决办法
2万
查看次数

公共区别{get; set}和编程getter和setter

可能重复:
C#中属性和变量的区别是什么

几个星期前我开始使用C#,这真的让我烦恼.C#允许这些所谓的"魔术"吸气剂和固定剂,也称为"语法糖".所以,我可以这样做:

public int myInt { get; set; }

但从封装的角度来看,这是毫无意义的.首先,数据成员是公共的,我可以使用点运算符来获取/设置它.但是,如果我这样做:

private int myInt { get; set; }

我根本无法访问它myInt is inaccessible due to protection level.这是什么实际上是在做什么?我认为这应该是完成数据封装的简单方法,所以我不必这样做:

private int myInt;
public void setMyInt(int i) { myInt = i; }
public int getMyInt() { return myInt; }
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.就像我所知,我只是将这些变量公之于众.我想也许我可以做类似的事情

public int myInt { get; }

所以客户端可以get,但不是set,但不是,仍然允许公共访问.什么给出了什么?

编辑 我不是要做任何具体的事情,我只是想了解这实际上是如何工作的.澄清:

使变量public不能完成封装,特别是当我可以使用点运算符访问它时.为private变量编写getter和setter 允许您对变量进行更改,但可以更好地控制实际发生的变化.

c# encapsulation

4
推荐指数
3
解决办法
1万
查看次数

列出自定义类型

我想说我正在用简单的编码学习语言.

如果我创建一个对象ResourceTemplate作为

public class ResourceTemplate
{
    public string Name;
    public int Value;
}
Run Code Online (Sandbox Code Playgroud)

然后做了

List<ResourceTemplate> resource = new List<ResourceTemplate>();
Run Code Online (Sandbox Code Playgroud)

该资源将是一个具有结构的列表ResourceTemplate.如果是这样,为什么我不能使用 resource.Add("product", 500);?

编译器说它不能对ResourceTemplate函数进行重载.

.net c# linq list

0
推荐指数
1
解决办法
229
查看次数

标签 统计

c# ×5

c#-3.0 ×2

.net ×1

automatic-properties ×1

encapsulation ×1

field ×1

linq ×1

list ×1

oop ×1

properties ×1