理解CIL有什么好处?
你必须知道装配才能理解它吗?这些文件中的代码看起来很相似.
我如何了解更多信息?有关它的任何书籍,如Jon Skeet的C#书吗?
我为String编写了一个扩展方法来获取一个char参数string.Remove(char).但是当我使用它时,它改为调用默认string.Remove(int)方法.
实际方法的存在不应该比隐式转换具有更高的优先级吗?
我问这个是因为看起来像使用Object似乎是一个解决某些问题的简单方法,比如"我没有特定的类型,所以使用Object"等.
这也让我感到好奇的原因是因为我的一位同事告诉我,如果.NET是一个真正的面向对象的平台,那么它就不必拥有像Object这样的所有类型.
因此,如果.NET没有Object类型,那么解决发生问题的替代方法是什么才能使其功能相同?
另外需要注意的是,这不是打击.NET,因为我每天都在工作中使用它.只想了解更多信息.
编辑:我记得的另一个注意事项是因为Object类型存在,它的影响遍及整个.NET.像IEnumerable一样存在但IEnumerable <T>.在许多情况下,您必须实现通用和非通用版本的事物等.
一个例子是:
XNamespace ns = "my namespace"
Run Code Online (Sandbox Code Playgroud)
为什么不?:
XNamespace ns = new XNamespace ( "my namespace" )
Run Code Online (Sandbox Code Playgroud)
使用隐式/显式转换而不是构造函数背后的想法是什么?方便?
有这方面的指导方针吗?
通常,如果有一个属性获取/设置状态值,我使用"是",如:
Visibility:
.IsVisible
Run Code Online (Sandbox Code Playgroud)
但是对于获取/设置动作的属性,最好使用什么?喜欢:
Casting shadows:
.CastShadows
Run Code Online (Sandbox Code Playgroud)
我应该使用:
.DoesCastShadows
Run Code Online (Sandbox Code Playgroud)
还有更好的选择吗?
在C#中可以有这样的东西吗?我不太确定:
class Library
{
public string Books[string title]
{
get{return this.GetBookByName(string title);}
}
public DateTime PublishingDates[string title]
{
get{return this.GetBookByName(string title).PublishingDate;}
}
}
Run Code Online (Sandbox Code Playgroud)
所以它可以这样使用:
myLibrary.Books["V For Vendetta"]
myLibrary.PublishingDates["V For Vendetta"] = ...
Run Code Online (Sandbox Code Playgroud)
所以我需要在我的框架中实现的完整成员方法(通过调用它们)是:
GetCustomStringValue (key)
GetCustomIntValue (key)
GetCustomBoolValue (key)
GetCustomFloatValue (key)
SetCustomStringValue (key)
SetCustomIntValue (key)
SetCustomBoolValue (key)
SetCustomFloatValue (key)
Run Code Online (Sandbox Code Playgroud)
我想用我自己的类型实现它们更清洁.
using ( var sw = new StreamWriter ( file ) )
{
XmlSerializer xs = new XmlSerializer ( typeof ( T ) );
xs.Serialize ( sw, data );
sw.Close()
}
Run Code Online (Sandbox Code Playgroud)
我知道你不必打电话Dispose但是你必须打电话给这个Close方法sw吗?
我检查了默认快捷方式,它们显示在全局上下文中,但我仍然无法使用这些键在选项卡之间切换.
任何想法为什么他们不工作?

我有一些ObservableCollections绑定到一些WPF控件,它们工作正常.我有一个功能,我通过重新分配完全替换这些ObservableCollections并再次填充它们,但在这之后,WPF控件不会更新.
或者这个绑定连接只在启动时建立一次,然后我永远不应该重新初始化ObservableCollections,但只改变它们?
编辑:
public partial class MainWindow : Window
{
ObservableCollection<EffectViewModel> effects;
public ObservableCollection<EffectViewModel> Effects
{
get { return this.effects; }
set
{
this.effects = value;
this.RaisePropertyChanged ( "Effects" );
}
}
public event PropertyChangedEventHandler PropertyChanged;
void RaisePropertyChanged ( string name )
{
var handler = this.PropertyChanged;
if ( handler != null )
handler ( this, new PropertyChangedEventArgs ( name ) );
}
}
public void LoadEffects ( string path, string filename )
{
//returns new ObservableCollection<EffectViewModel> ( );
this.Effects …Run Code Online (Sandbox Code Playgroud) 混淆只是关于非公共变量/成员的名字吗?如果是这样,是否有可能编写一个至少将这些名称更改为"variable1"等更易读的名称的应用程序,然后提取仍然可以编译的整个代码?
.net ×9
c# ×8
cil ×1
constructor ×1
dispose ×1
obfuscation ×1
properties ×1
type-systems ×1
types ×1
wpf ×1