相关疑难解决方法(0)

C#结构应该只具有只读属性

我在读虽然关于在计算器上不纯的方法问题,在这里,它让我想起了结构设计的最佳实践.

阅读有关创建不可变结构的示例,此处属性仅定义为getter.

public DateTime Start { get { return start; } }
public DateTime End { get { return end; } }
public bool HasValue { get { return hasValue; } }
Run Code Online (Sandbox Code Playgroud)

其他地方的其他示例包括System.Drawing.Point属性中的getter和setter.

public int Y {
    get {
        return y;
    }
    set {
        y = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

设计准则不指定,但他们都相当简洁.结构属性的推荐方法是什么?只读或允许写作?

c# struct

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

列表中的数组

我是一名新的程序员,我的新项目是制作一份排序日记.

我希望日志本身是一个列表,但每个新帖子都是一个新的数组,可以包含2个项目(标题和帖子).我应该补充一点,这是一个学校项目,所以我需要一个正确方向的颠簸.

我希望我能清楚地知道我想做什么,并提前感谢!

c# arrays list

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

没有指定大小的C#数组

当我不知道元素的确切数量时,我有一个关于在C#中创建数组的问题.我发现了很多类似的问题,比如这个问题.建议使用List而不是Array.在那个例子和其他所有例子中,我看到它实例化了一个'字符串列表'.我可以用结构做同样的事情吗?

例如,我有以下用于存储故障信息的结构,但我不知道在测试开始时会发生多少次故障.它可能是0,可能是数百.

    public struct EraseFailures
    {
        public string timestamp;
        public string bus;
        public string channel;
        public string die;
        public string block;
    }
Run Code Online (Sandbox Code Playgroud)

那么我也可以创建这些列表吗?

    List<EraseFailures> eFails = new List<EraseFailures>();
Run Code Online (Sandbox Code Playgroud)

它编译得很好,但我想确保这是最好的方法.如果是,将值添加到我的列表的语法是什么?因为以下似乎不正确......

     eFails.bus.Add("bus0");
Run Code Online (Sandbox Code Playgroud)

好像我可能要创建一个包含我想要的值的新结构,然后将其添加到List中.

c# arrays struct list

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

修改foreach中的内容

我倾向于使用结构的ArrayLists.然后用foreach循环遍历列表非常容易.

我遇到的问题是我不能使用foreach来修改结构内容,并且必须使用for和messy类型转换.

((dataStructure)files[x]).name = here;
Run Code Online (Sandbox Code Playgroud)

有更简洁的方法吗?

c# casting structure arraylist

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

在C#中创建struct的arraylist

我有一个结构

struct myStruct {
    Dictionary<string, int> a;
    Dictionary<string, string> b;
    ......
}
Run Code Online (Sandbox Code Playgroud)

我想创建该结构的arraylist

ArrayList l = new ArrayList();
myStruct s;

s.a.Add("id",1);
s.b.Add("name","Tim");

l.Add(s);
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误"对象引用未设置为对象的实例".

谁能告诉我为什么?

谢谢.

c# struct arraylist

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

C#原始类型(double,int等)和Struct差异

我对结构感到困惑.

class A
{
  double a { get; set; }  
  MyStruct b { get; set; }

  void Modify()
  {
     a = 1.0;    // This compiles.
     b.c = 2.0;  // Assuming c is a double. This gives the known error.
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么我能够设置结构a的值,而不是结构的字段b?我读到的答案是我有一份b而不是b的支持字段.按照同样的逻辑,我必须有a的副本,而不是a,所以如何解释a属性在允许的分配后被更改

a = 1.0;
Run Code Online (Sandbox Code Playgroud)

?谢谢.

编辑:
另外为了仍然在A类中使用b,通过set和get方法"过滤"而不是直接使用支持字段_b,这可能是这样的:

MyStruct _b;
MyStruct b { get { return _b; } set { _b=value; } }
Run Code Online (Sandbox Code Playgroud)

然后使用该字段

_b
Run Code Online (Sandbox Code Playgroud)

正如在答案中正确陈述的那样,我想到了一个愚蠢的方法来将属性"包装"在一个大小为1的一维数组中.

MyStruct[] b { get; set; }
Run Code Online (Sandbox Code Playgroud)

用类包装结构.我不知道这个的计算成本,但我更喜欢直接使用A类中的字段.

回答:好的,当你习惯将属性解释为你脑海中的字段时,这个问题就会出现混乱.如果你以正确的方式解释属性 …

c# primitive struct field properties

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

请将值存储到收集中,建议

新手问题.我应该使用什么样的集合类型来存储这样的结构?

Files collection
---------------
FileId: Int
FileName : String
Path: String
Run Code Online (Sandbox Code Playgroud)

我需要将几个文件数据存储到该集合中,找到Path by FileId字段,通过FileId字段删除项目.

.net collections types

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

将字典转换为列表<struct>

我有一个我为usercontrol特定创建的结构.我的想法是,我会有一个公共财产Guid Dictionary<string, Guid> Attachments,然后将其转换为我List<Attachment> attachments在设置者的私人财产.我很难做到这一点,最好是使用linq,但我愿意接受替代方案.谢谢...

private List<Attachment> attachments;
public struct Attachment
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}
public Dictionary<string, Guid> Attachments
{
    get { return attachments.ToDictionary(a => a.Name, a => a.Id); }
    set { attachments = new List<Attachment> // not sure what to do here }
}
Run Code Online (Sandbox Code Playgroud)

c# linq

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

c#按引用或按值

假设我有一个对象列表,我正在从列表中提取和修改项目,如下所示:

List<MyObject> TheListOfObjects = new List<MyObject>();
MyObject TheObject = new MyObject();

TheListOfObjects = //some json deserialization result

TheObject = (from o in TheListOfObject
             where o.ID == SomeParameter
             select o).SingleOrDefault();

TheObject.SomeProperty = SomeValue;
Run Code Online (Sandbox Code Playgroud)

当我写作TheObject.SomeProperty = SomeValue;时,我:

  1. 修改列表中的项目,在这种情况下我已完成或
  2. 修改一个新项目,我必须用我刚修改的项目替换列表中的原始项目.

c#

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

如何预先设置公共结构中的值?

public struct customerItemListStruct { 
        public int ID { get; set; } 
        public string name { get; set; } 
        public double rate { get; set; } 
        public int quantity { get; set; } 
        //public double total = rate * quantity; 
Run Code Online (Sandbox Code Playgroud)

}

我想预先设定总值.

建议我最好的方法!谢谢!

.net c# struct

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

标签 统计

c# ×9

struct ×5

.net ×2

arraylist ×2

arrays ×2

list ×2

casting ×1

collections ×1

field ×1

linq ×1

primitive ×1

properties ×1

structure ×1

types ×1