将所选项目归于某种类型
Attributing the selected item to a certain type
我有一个组合框,其中包含 Something 类型的项目。在发生事件时,我想将该项目分配给一个变量。目前,由于 SelectedItem 是 Object 类型,我需要像这样将其拆箱为所需的类型。
Something something = ThatComboBox.SelectedItem as Something;
如果用枚举类型,那就更不方便了,因为那时我需要强制转换或为空,然后像这样合并。
Something something;
something = (Something)ThatComboBox.SelectedItem;
something = ThatComboBox.SelectedItem as Something? ?? default(Something);
我想知道我是否可以(如果可以,我将如何处理)属性(或类似的)组合框,以便当我得到它的选定项目时,我可以得到它作为我内心想要的任何类型。或者,至少,拳击之前的类型。
请注意,我想知道我是否可以不使用 扩展方法。
ComboBox.SelectedItem
具有 object
类型,因此它可能包含对 any 类型(或 null)的引用。
as
运算符根本不起作用,只是使编译器能够将引用视为对另一种类型的引用(在您的情况下是对 Something 的引用)。
不涉及运行时开销,只是源代码中多了一行。我看不出要避免这种情况 why/how。
我有一个组合框,其中包含 Something 类型的项目。在发生事件时,我想将该项目分配给一个变量。目前,由于 SelectedItem 是 Object 类型,我需要像这样将其拆箱为所需的类型。
Something something = ThatComboBox.SelectedItem as Something;
如果用枚举类型,那就更不方便了,因为那时我需要强制转换或为空,然后像这样合并。
Something something;
something = (Something)ThatComboBox.SelectedItem;
something = ThatComboBox.SelectedItem as Something? ?? default(Something);
我想知道我是否可以(如果可以,我将如何处理)属性(或类似的)组合框,以便当我得到它的选定项目时,我可以得到它作为我内心想要的任何类型。或者,至少,拳击之前的类型。
请注意,我想知道我是否可以不使用 扩展方法。
ComboBox.SelectedItem
具有 object
类型,因此它可能包含对 any 类型(或 null)的引用。
as
运算符根本不起作用,只是使编译器能够将引用视为对另一种类型的引用(在您的情况下是对 Something 的引用)。
不涉及运行时开销,只是源代码中多了一行。我看不出要避免这种情况 why/how。