小编Oli*_*bes的帖子

C#参数中的键值对

我正在寻找一种方法来获得如下功能:

myFunction({"Key", value}, {"Key2", value});
Run Code Online (Sandbox Code Playgroud)

我确定有一些匿名类型的东西很容易,但我没有看到它.

我能想到的唯一解决方案是使用"params KeyValuePair [] pairs"参数,但最终会出现类似于:

myFunction(new KeyValuePair<String, object>("Key", value),
           new KeyValuePair<String, object>("Key2", value));
Run Code Online (Sandbox Code Playgroud)

诚然,这更加丑陋.

编辑:

为了澄清,我正在写一个"消息"类来传递两个不同的系统.它包含指定消息类型的ushort,以及与消息关联的"Data"的字符串到对象的字典.我希望能够在构造函数中传递所有这些信息,所以我能够这样做:

Agent.SendMessage(新消息(MessageTypes.SomethingHappened,"A",x,"B",y,"C",z)); 或类似的语法.

c# parameters key-value

32
推荐指数
4
解决办法
5万
查看次数

嵌套"来自"LINQ查询用扩展方法表示

如何使用扩展方法语法编写此LINQ查询?

var query = from a in sequenceA
            from b in sequenceB
            select ...; 
Run Code Online (Sandbox Code Playgroud)

c# linq

26
推荐指数
2
解决办法
6460
查看次数

c#dictionary如何为单个键添加多个值?

我创建了字典对象

Dictionary<string, List<string>> dictionary =
    new Dictionary<string,List<string>>();
Run Code Online (Sandbox Code Playgroud)

我想将字符串值添加到给定单个键的字符串列表中.如果密钥尚不存在,那么我必须添加一个新密钥.List<string>是不是预定义的,我的意思是我没有创建任何列表对象,然后提供给dictionary.Add("key",Listname).如何动态创建此列表对象dictionary.Add("key",Listname),然后将字符串添加到此列表.如果我必须添加100个密钥,那么在执行dictionary.Add指令之前我是否必须创建100个列表?我是否必须对此列表的内容进行pedefine?

谢谢.

c# dictionary list

22
推荐指数
3
解决办法
9万
查看次数

在 C# 10.0 中启用可为 null 的仅初始化引用属性

我尝试使用仅限 init 的属性来强制客户端代码在创建类时初始化它,但没有构造函数。它没有按我的计划进行。

这是课程,为了说明这一点而进行了精简。

public class Target
{
    public int              Id               { get; init; }
    public string           Name             { get; init; }
}
Run Code Online (Sandbox Code Playgroud)

该项目基于 .NET 6.0,因此我使用 C# 10.0。Nullable 在项目上设置为“Enabled”,因此引用属性Name 必须为非空。让我困惑的是,编译器抱怨构造函数之后的 Name 属性可能为 null 。

CS8618:退出构造函数时,不可为空的属性“Name”必须包含非空值

当然,这是事实,但使用仅限 init 的属性的全部意义在于我不需要构造函数。我想强迫人们使用仅初始化属性来初始化Name为有效的东西。如果我想编写一个构造函数,我可以只编写一个只读属性。

(我意识到我自己可以默认Namestring.Empty或其他一些有效值,但我想强制编码器这样做)

C# 10.0 是否为我提供了一种无需执行以下任何操作即可实现我想要的目标的方法?

  • 将引用属性默认为某个非空值(通过构造函数或通过内联初始化程序)
  • 将属性声明为可为空
  • 完全禁用 nullable
  • 使用record类型而不是类(因为我想要成员函数)

这可行吗?

我对这个主题的搜索让我找到了这篇文章,但我能从中得到的最好的信息是 Mads Torgensen 博客的链接,讨论他们计划在 C# 10 中做什么。有更新吗?

c# nullable-reference-types c#-10.0

21
推荐指数
2
解决办法
4673
查看次数

遍历表单上的所有控件,甚至是组框中的控件

我想在我的表单上的所有文本框中添加一个事件:

foreach (Control C in this.Controls)
{
    if (C.GetType() == typeof(System.Windows.Forms.TextBox))
    {
        C.TextChanged += new EventHandler(C_TextChanged);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是它们存储在几个组框中,而我的循环看不到它们.我可以单独循环遍历每个组框的控件,但是可以在一个循环中以简单的方式完成所有操作吗?

c# groupbox

19
推荐指数
4
解决办法
5万
查看次数

使用System.Drawing绘制圆圈

我有这个代码绘制一个矩形(我试图重新制作MS Paint)

 case "Rectangle":
               if (tempDraw != null)
                {
                    tempDraw = (Bitmap)snapshot.Clone();
                    Graphics g = Graphics.FromImage(tempDraw);
                    Pen myPen = new Pen(foreColor, lineWidth);
                    g.DrawRectangle(myPen, x1, y1, x2-x1, y2-y1);
                    myPen.Dispose();
                    e.Graphics.DrawImageUnscaled(tempDraw, 0, 0);
                    g.Dispose();
                }
Run Code Online (Sandbox Code Playgroud)

但是,如果我想绘制一个圆圈,会发生什么变化呢?

g.DrawRectangle(myPen, x1, y1, x2-x1, y2-y1);
Run Code Online (Sandbox Code Playgroud)

c# drawing

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

如何根据文本大小调整按钮的大小

在使用C#+ Winforms翻译应用程序的过程中,我需要根据语言更改按钮的文本.

我的问题如下:

假设我要翻译"大家好!"按钮."Bonjour tout le monde"!

你可以猜到,如果我输入英文文本或法文文本,按钮的大小将不一样......我的问题是"简单",我怎样才能设法调整按钮的大小,以便文本适合其内容按钮 ?

到目前为止,我有类似的东西!

[大家好!]

[你好]

c# text resize button winforms

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

Dim v As String()和Dim v()As String有什么区别?

这可能听起来微不足道,但是在VB.NET中Dim v As String()和Dim v()As String之间有什么区别?

.net vb.net arrays

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

如何使用Entity Framework Core获取主键值

我们目前正在使用下面的方法,该方法依赖于抽象存储库中的IObjectContextAdapter.从我正在阅读的内容看来,与ObjectContext相关的任何内容都被从实体框架核心中删除.下面的方法是我们唯一依赖于与ObjectContext相关的东西的地方.

我们想升级到Entity Framework Core.这是我们唯一的路障.有没有办法通过Entity Framework Core apis获取实体主键的值?

// Entity Framework
public virtual int GetKey(T entity)
{
    var oContext = ((IObjectContextAdapter)_DbContext).ObjectContext;
    var oSet = oContext.CreateObjectSet<T>();
    var keyName = oSet.EntitySet.ElementType
                                .KeyMembers
                                .Select(k => k.Name)
                                .Single();

    return (int)entity.GetType().GetProperty(keyName).GetValue(entity, null);
}
Run Code Online (Sandbox Code Playgroud)

entity-framework primary-key repository-pattern entity-framework-core

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

IsGenericType和IsGenericTypeDefinition之间的区别

Type.IsGenericType和之间有什么区别Type.IsGenericTypeDefinition?有趣的是,MSDN的IsGenericTypeDefinition链接已被破坏.

在尝试检索给定DbContext中定义的所有DbSets后,我发现了以下内容,我试图理解这种行为:通过IsGenericType过滤属性返回所需的结果,而不使用IsGenericTypeDefinition(不返回任何).

有趣的是,从这篇文章中我得到的印象是作者使用IsGenericTypeDefinition获得了他的DbSets,而我却没有.

按照说明讨论的示例:

private static void Main(string[] args)
{
    A a = new A();
    int propertyCount = a.GetType().GetProperties().Where(p => p.PropertyType.IsGenericType).Count();
    int propertyCount2 = a.GetType().GetProperties().Where(p => p.PropertyType.IsGenericTypeDefinition).Count();

    Console.WriteLine("count1: {0}  count2: {1}", propertyCount, propertyCount2);
}

// Output: count1: 1  count2: 0

public class A
{
    public string aaa { get; set; }
    public List<int> myList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c# generics reflection system.type

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