我最近-pedantic在gcc上启用了选项,现在我有大约两到三页的"ISO C90禁止混合声明和代码"警告.
我在这个项目中的目标是能够在任何带有交流编译器的主流系统上部署它,所以我意识到假设C99在任何地方都得到支持是不明智的,但是它是否值得花时间来解决这些警告?
是否还有那些不支持混合声明和代码的c编译器系统?
为什么我们需要像Factory,Abstract Factory和Singleton这样的设计模式?
这可能是C#101所涵盖的内容,但我无法在谷歌或堆栈溢出的任何地方找到这个问题的易于理解的答案.有没有更好的方法从组合框中返回文本值而不使用我想出的这种糟糕的工作?
private void test_site_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string cmbvalue = "";
cmbvalue = this.test_site.SelectedValue.ToString();
string[] cmbvalues = cmbvalue.Split(new char[] { ' ' });
MessageBox.Show(cmbvalues[1]);
}
Run Code Online (Sandbox Code Playgroud)
请不要狠狠地对我说话,我现在真的只是拿起c#和OOP.
我写了这个扩展方法:
public static DataTable ToDataTable<T>(this IList<T> list)
{...}
Run Code Online (Sandbox Code Playgroud)
如果在编译时使用已知类型调用它,它的效果很好:
DataTable tbl = new List<int>().ToDataTable();
Run Code Online (Sandbox Code Playgroud)
但是如果通用类型未知,如何调用呢?
object list = new List<int>();
...
tbl = Extension.ToDataTable((List<object>)list); // won't work
Run Code Online (Sandbox Code Playgroud) 我有一个xaml代码:
<Grid>
<WrapPanel>
<TextBox ></TextBox>
<Button Content="GetIt" />
</WrapPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得textBox的所有可用空间?
我想做那样的事情:
| [____________________] [GETIT] |
当我们绑定到异构的对象集合时,并非所有对象都具有相同的属性集.在输出窗口中,我们得到如下消息:
System.Windows.Data错误:39:BindingExpression路径错误:'对象'''MultiLineTextMarkingScheme'(HashCode = 7262386)'上找不到'RoundingFactor'属性.BindingExpression:路径= RoundingFactor; ..........
这似乎不是一个例外,但我们担心它会对性能产生影响.
我们是否应该关注并创建一个视图模型,它具有我们希望绑定的所有属性(并且具有底层元素上不存在的属性返回null)或者我们可以保留它.
这种情况经常发生在可能存在大量这些绑定失败的网格场景中.
我想创建一个简单的winforms或wpf应用程序,我可以拖放虚拟"卡".下面这不是我想要做的,但它是我在网络上发现的最接近用户界面的东西.
所以基本上我想在GUI中有列,我可以从一个拖动到另一个.
我的问题是:
在我无法控制的情况下,我有一个XmlDocument,它具有如下结构:
<parent1>
...minor amount of data...
</parent1>
Run Code Online (Sandbox Code Playgroud)
我有另一个XmlDocument,也在我的控制之外,它具有以下结构:
<parent2>
..very large amount of data...
</parent2>
Run Code Online (Sandbox Code Playgroud)
我需要一个XmlDocument格式:
<parent1>
...minor amount of data...
<parent2>
..very large amount of data...
</parent2>
</parent1>
Run Code Online (Sandbox Code Playgroud)
我不想复制parent2.如何在不复制parent2的情况下获得所需的结构?我相信这意味着
oParent1.DocumentElement.AppendChild(oParent1.ImportNode(oParent2.DocumentElement, true));
Run Code Online (Sandbox Code Playgroud)
是不可能的.
有什么好的解决方案吗?
我正在使用Lokad共享库,而后者依赖于Mono.Cecil.
我有点困惑以下属性意味着什么(它们与.NET内部结构有关,因此具有等效的.NET内部结构):
知道这些意思/做什么吗?
这可能看起来像"家庭作业"和/或微不足道,但它是出于真正的商业目的; 这是我能想到解释我在概念上试图做的最简单的方法.
假设我有一个Animal类,以及其他一些类(Bird,Cat,Kangaroo).其中每一个都来自Animal.
动物可能看起来像这样:
public class Animal
{
public Animal()
{
}
public string Name { get; set; }
public string AnimalType { get; set; }
public List<Animal> Friends { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
袋鼠可能看起来像这样:
public class Kangaroo : Animal
{
public Kangaroo()
{
}
public int TailLengthInches { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
假设袋鼠有两个朋友,一只鸟和一只猫.我怎么能将这些添加到"动物"朋友列表(作为动物类型),但保留访问派生类属性的能力?(例如,我仍然需要能够使用特定于动物类型的属性,例如鸟类的羽毛颜色,即使它们只被视为"动物".
我试图这样做的原因是,当我后来获得动物的"朋友"列表时,我知道朋友是什么类型的动物是至关重要的.根据动物类型(无论是鸟类,猫等),我想做一些不同的事情(实际上,在ASP.NET页面上显示不同的模板,但我并不需要特别的帮助).
我想这可以归结为...如果我有一个Animal列表,我怎么知道列表中每个对象的派生类型是什么,所以我可以将它们转换回派生类型或做其他事情这允许我到达每个派生类型的特定,不同的属性?
谢谢!
c# ×5
wpf ×4
.net ×1
architecture ×1
c ×1
class ×1
combobox ×1
data-binding ×1
derived ×1
exception ×1
generics ×1
inheritance ×1
mono ×1
mono.cecil ×1
oop ×1
optimization ×1
performance ×1
types ×1
winforms ×1
xaml ×1
xmldocument ×1