在C#中获取变量的正确语法

12 浏览
0 Comments

在C#中获取变量的正确语法

在只在对象初始化时设置变量的情况下,但希望其他对象能够读取该变量且初始化后不能再设置它时,在C#中的正确语法是什么?\n根据我理解,应该是这样的:\n

class Test
{
 private string name;
 public string Name { get { return name; } }
 public Test() {
  this.name = "Hello World!";
 }
}

\n这是正确的方式吗?

0
0 Comments

在现代的C#中,你可以这样做:

class Test
{
    public string Name { get; }
    public Test(string name) 
    {
         Name = name;
    }
}

你的getter方法返回的是私有字段,但是我的版本使用了.NET的自动备份功能。而且在我的版本中,备份字段是只读的,所以你不能在类内部修改它。如果你真的需要这样做,你可以使用:

class Test
{
    public string Name { get; private set; }
    //...
}

在最新的C#版本中还有其他设置属性的方式,但我更喜欢在构造函数中明确地设置它。

0
0 Comments

在C#6中,引入了自动属性初始化器(auto-property initializers)的特性,可以更简单地实现变量的获取。根据给出的代码示例,我们可以看到在C#6中,可以使用以下语法来定义自动属性初始化器:

public string Name {get;} = "Hello World!";

使用这种语法,可以将变量的赋值和属性的定义合并到一行代码中,使代码更简洁。

在这个问题中,原始的实现也是正确的,但是使用了更复杂的语法。通过使用C#6中的自动属性初始化器,我们可以将代码简化并提高可读性。

总结起来,C#6中引入的自动属性初始化器可以帮助我们更简洁地定义和初始化变量。在需要获取变量的情况下,使用自动属性初始化器可以使代码更简洁、可读性更高。

0
0 Comments

问题出现的原因是希望在C#中正确获取变量的语法。解决方法有以下几种:

第一种方法是使用readonly关键字,这样可以防止在构造函数外部修改name变量。代码示例如下:

class Test
{
    private readonly string name;
    public string Name { get { return name; } }
    public Test()
    {
        name = "Hello World!";
    }
    public Test(string name)
    {
        this.name = name; //You use this to set scope to the object to disambiguate name
    }
}

第二种方法是使用readonly automatic property,但是这种方法无法防止在构造函数之外的地方修改变量。代码示例如下:

class Test
{
    public string Name {get; private set;}
    public Test()
    {
        Name = "Hello World!";
    }
    public Test(string name)
    {
        Name = name;
    }
}

第三种方法是在C# 6中使用auto-property initializer,代码示例如下:

class Test
{
    public string Name {get;} = "Hello World!";
    public Test()
    {
    }
    public Test(string name)
    {
        Name = name;
    }
}

以上是问题的解决方法,同时还有一些额外的提示和说明。希望对您有帮助!

0