小编MrN*_*ick的帖子

C#System.Object.operator ==()

我试着试着使用System.Object.operator ==().

我的有效C#书和这里的页面(http://www.srtsolutions.com/just-what-is-the-default-equals-behavior-in-c-how-does-it-relate-to-gethashcode) ,说:

"System.Object.operator ==()将调用a.Equals(b)来确定a和b是否相等".

所以用我的代码:

   object a = 1;
   object b = 1;

   if(object.Equals(a, b))
   {
    // Will get here because it calls Int32.Equals(). I understand this.

   }

   if(a == b)
   {
    // I expected it to get here, but it doesn't.
   }
Run Code Online (Sandbox Code Playgroud)

我期望(a == b)调用Int32的覆盖Equals并以与static objet.Equals()相同的方式比较值.我错过了什么?

编辑:我或许应该补充一点,我可以看到(a == b)正在测试 - 它正在测试参考相等性.我被这本书抛出,似乎暗示它将在内部工作,就像静态对象一样.Equals(obect,object)会.

c#

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

C#性能问题

我刚刚参加了IKM C#测试.其中一个问题是:

以下哪项改进了C#程序的性能?

  • A.使用拳击
  • B.使用拆箱
  • C.不要使用常量
  • D.使用空的析构函数
  • E.使用值类型而不是引用类型

最后我跳过了这个问题,我能看到的唯一可能的答案是E.在某些情况下,值类型可以提供更好的性能(对于小类型:不需要解除引用而不在托管堆上[假设不是引用类型的成员] ]),但当然并非总是如此.

c#

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

将行添加到WPF数据网格中,直到运行时才知道列

我正在尝试将数据添加到数据网格(实际上,任何在网格中显示数据的控件都会这样做),但是直到运行时才知道列(名称和数字).

我知道如何创建的列:例如

DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Header = column.DisplayName;
MyDataGrid.Columns.Add(textColumn);
Run Code Online (Sandbox Code Playgroud)

但是我该如何添加行?我没有看到如何使用绑定,因为我的数据不包含在具有已知属性的对象中.例如,每行的数据可能以字符串[]形式出现.所以有一次我可能有三列,另一次我可能有五列.

我原以为能做这样的事情:

// Example data to represent a single row.
string[] row1 = new[] { "value1", "value2", "value3" };

var row = new Row;
row.AddCell(row1[0]);
row.AddCell(row1[1]);
row.AddCell(row1[2]);
MyDataGrid.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud)

c# wpf datagrid runtime

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

WPF绑定RelativeSource

在这里做一点测试.只有这两个文本框中的第一个显示值"123".为什么不是第二个?

<Window x:Class="Test.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
    Title="MainWindow" Height="350" Width="525">
<StackPanel Width="123" x:Name="Panel1">
    <TextBox Text="{Binding ElementName=Panel1, Path=Width, diag:PresentationTraceSources.TraceLevel=High}"></TextBox>
    <TextBox Text="{Binding Source={RelativeSource AncestorType={x:Type StackPanel}}, Path=Width, diag:PresentationTraceSources.TraceLevel=High}"></TextBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

c# wpf binding relativesource

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

标签 统计

c# ×4

wpf ×2

binding ×1

datagrid ×1

relativesource ×1

runtime ×1