Tag: 显式

实现接口隐式和显式是否有意义?

我正在攻读MS 70-515考试。 在其中一个实践中,作者实现了隐式和显式的接口。 显式实现只调用隐式实现。 刚才列出了显式实现而没有解释。 同时拥有接口的隐式和显式实现是否有意义? 我认为显式实现是多余的(在这种情况下)。 public class PassTextBox : TextBox, IScriptControl { public virtual IEnumerable GetScriptDescriptors() { var descriptor = new ScriptControlDescriptor( “AjaxEnabled.PassTextBox”, ClientID); // … return new ScriptDescriptor[] {descriptor}; } IEnumerable IScriptControl.GetScriptDescriptors() { return GetScriptDescriptors(); } } 顺便说一下,代码似乎在没有显式实现的情况下运行得很好,因为隐式实现是公开的。 它涉及MCTS Self-Paced Training Kit(考试70-515):使用Microsoft .NET Framework进行Web应用程序开发4第9章,第2课,练习3。

编译器使用显式转换为.NET类型将显式转换替换为我自己的类型?

我有以下代码: public struct Num { private readonly T _Value; public Num(T value) { _Value = value; } static public explicit operator Num(T value) { return new Num(value); } } … double d = 2.5; Num b = (Num)d; 这段代码编译,令我惊讶。 显式转换应该只接受一个byte ,而不是一个byte 。 但双重被接受了。 当我在转换器中放置断点时,我看到该value已经是值为2的byte 。 通过从double到byte的转换应该是显式的。 如果我用ILSpy反编译我的EXE,我会看到下一个代码: double d = 2.5; Program.Num b = (byte)d; […]

字符串和整数,隐式和显式

有一个同事问我这个问题,在我脑子里迷茫的状态我没有答案: 你为什么这样做: string ham = “ham ” + 4; 但不是: string ham = 4; 如果在连接时存在字符串转换的隐式转换/操作,为什么在将其指定为字符串时不一样? (当然没有做一些运算符重载)

什么时候必须在C#中使用隐式和显式运算符?

这些运营商的用途是什么?

Datagrid templatecolumn更新源触发器显式仅更新第一行

我的XAML: 我的学生管理课程: public class StudentManagement:INotifyPropertyChanged { private string StudId; public bool Check { get; set; } public int ID { get; set; } public string StudentID { get { return StudId; } set { StudId = value; PropertyChanged(this, new PropertyChangedEventArgs(“StudentID”)); } } public string FirstName { get; set; } public string LastName { get; set; […]

为什么我不能在显式实现接口的类中调用方法?

这是故事。 我创建了一个界面, IVehicle 。 我在我的类Vehicle.cs明确地实现了接口。 这是我的界面: Interface IVehicle { int getWheel(); } 这是我的class级: class Vehicle: IVehicle { public int IVehicle.getWheel() { return wheel; } public void printWheel() { Console.WriteLine(getWheel()); } } 请注意, getWheel()已明确实现。 现在,当我尝试在我的Vehicle类中调用该方法时,我收到一个错误,指示当前上下文中不存在getWheel() 。 有人能帮我理解我做错了吗?

为什么我不能使用带显式运算符的接口?

我只是想知道是否有人知道你不允许使用隐式或显式运算符的接口的原因? 例如,这会引发编译时错误: public static explicit operator MyPlayer(IPlayer player) { … } “不允许在接口之间进行用户定义的转换” 谢谢,

非对象字段错误错误地对齐或重叠

我正在尝试创建以下结构: [StructLayout(LayoutKind.Explicit, Size=14)] public struct Message { [FieldOffset(0)] public ushort X; [FieldOffset(2)] [MarshalAs(UnmanagedType.ByValArray, SizeConst=5)] private ushort[] Y; [FieldOffset(12)] public ushort Z; } 我收到以下错误: 无法从程序集中加载“消息”类型,因为它包含偏移量为4的对象字段,该字段未正确对齐或由非对象字段重叠。 有谁知道为什么这会导致错误? 注意:我不能使用Pack因为我正在使用紧凑框架。 谢谢。