相关疑难解决方法(0)

我应该使用int还是Int32

在C#中,int并且Int32是同样的事情,但我读了许多那个时代int优于Int32没有给出理由.有原因,我应该关心吗?

c# variable-types

345
推荐指数
12
解决办法
18万
查看次数

自动属性和结构不混合?

在回答这篇文章的同时踢了一些小结构,我意外地遇到了以下情况:

使用int字段的以下结构是完全合法的:

struct MyStruct
{ 
    public MyStruct ( int size ) 
    { 
        this.Size = size; // <-- Legal assignment.
    } 

    public int Size; 
}
Run Code Online (Sandbox Code Playgroud)

但是,使用自动属性的以下结构无法编译:

struct MyStruct
{ 
    public MyStruct ( int size ) 
    { 
        this.Size = size; // <-- Compile-Time Error!
    } 

    public int Size{get; set;}
}
Run Code Online (Sandbox Code Playgroud)

返回的错误是"在将所有字段分配给"之前,不能使用'this'对象.我知道这是结构的标准过程:任何属性的支持字段必须直接从结构的构造函数中指定(而不是通过属性的set访问器).

解决方案是使用显式支持字段:

struct MyStruct
{ 
    public MyStruct(int size)
    {
        _size = size;
    }

    private int _size;

    public int Size
    {
        get { return _size; }
        set { _size = value; …
Run Code Online (Sandbox Code Playgroud)

c# struct automatic-properties c#-3.0

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

C#Struct Generic Constructor

使用此代码:

struct Foo<T1>
{
    public T1 Item1 { get; private set; }

    public Foo(T1 item1)
    {
        Item1 = item1;
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到这个错误:

在将控制权返回给调用者之前,必须完全分配自动实现的属性"Foo.Item1"的备份字段.考虑从构造函数初始化程序中调用默认构造函数.

我的问题是,为什么在Item1调用构造函数后属性没有完全赋值?

编辑:更改setprivate set因为此问题与可变性无关.

c# generics constructor struct

7
推荐指数
1
解决办法
6151
查看次数

没有默认的构造函数和自动属性,如何编译

我是C#的新手,只是有关默认构造函数和自动属性的问题。基于一个关于stackoverflow的问题: 如何在struct构造函数中设置auto属性支持字段的值?

所以我们有以下结构

public struct SomeStruct
{
   public SomeStruct(String stringProperty, Int32 intProperty)
   {
      this.StringProperty = stringProperty;
      this.IntProperty = intProperty;
   }
   public String StringProperty { get; set; }
   public Int32 IntProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是如何在不调用默认构造函数by的情况下对我进行编译:this()呢?另一个问题是为什么同一规则不适用于类?没有默认构造函数的情况下可以拥有自动属性吗?

.net c# oop

2
推荐指数
1
解决办法
71
查看次数