考虑使用空白数组的linq示例:
当Any()
回报false
,因为大于零,没有号码怎么能All()
返回true
输送所有的数字大于零?
var arr = new int[] { };
Console.WriteLine(arr.Any(n => n > 0)); //false
Console.WriteLine(arr.All(n => n > 0)); //true
Run Code Online (Sandbox Code Playgroud) 我知道我们可以按照MSDN上所述的members-collection中的顺序强制生成类中的成员.但是,我寻找一些代码,它们还添加了一个序列化属性,提供了这些成员的顺序.所以这就是我希望生成器创建的内容:
class MyClass
{
[XmlElement("TheProperty", Order = 0]
public int MyProperty { get; set; }
[XmlElement("AnotherProperty", Order = 1]
public int AnotherProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
目前,我有一种方法可以循环DOM中所有类型的成员,并将该属性附加到CustomAttributes
current(public
)属性或字段的-member .
var types = code.Types.Cast<CodeTypeDeclaration>().Where(x => !x.IsEnum);
foreach (var members in types.Select(x => x.Members.Cast<CodeTypeMember>()))
{
int i = 0;
var propertiesAndFields = members.Where(x => (
x.Attributes & MemberAttributes.Private) != MemberAttributes.Private
&& (x is CodeMemberField || x is CodeMemberProperty));
foreach (CodeTypeMember member in propertiesAndFields)
{
var attr …
Run Code Online (Sandbox Code Playgroud) 我安装了JD-eclipse-plugin.我想在jar文件中反编译类.因此,我在Project-Explorer中选择jar文件,然后单击菜单中的Decompiler.然而,两个反编译器(JAD和JD-core)都是灰色的.
我还尝试了这个博客中关于AVAJAVA Web Tutorials的步骤.我猜博客有点过时了,不过我在Windows中可以看到 - >首选项 - > Java - > Decompiler,Jad正确设置.但是在首选项 - >常规 - >编辑器 - >文件关联中找不到JD-eclipse,如下图所示..现在我右键单击Project-Explorer中的jar文件,但是没有这样的"附加源文件".
我错过了设置插件的任何内容吗?
编辑:我使用以下设置:Eclipse:Mars.1 Release(4.5.1); JadClipse 4.0.0; JDK 1.8
EDIT2:忘记提到我使用Tomcat并希望深入了解库/WebContent/WEB-INF/lib
.这不起作用,我不能进一步崩溃jar文件.
我有一个循环如下:
foreach(x in myColl)
{
foreach(var y in x.MyList)
{
result.Add(x.MyKey + y)
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着在我的内部循环中,我需要访问当前外部元素的属性.
我正在寻找LINQ声明,但我不确定.我试过用它
result = myColl
.SelectMany(x => x.MyList)
.SelectMany(x => /* how to get the key of the outer loop here */ + x)
Run Code Online (Sandbox Code Playgroud) 我有一些代码使用COM公开的第三方库(ArcObjects).所以例如有-interface IGeometry
.
IGeometry geometry = GetGeometry();
Run Code Online (Sandbox Code Playgroud)
现在,当我想查看对象成员时,我打开了一个QuickWatch:
我已经阅读了几个问题,这些问题都指向Visual Studio 2015中的"启用本机代码调试"选项.我已经启用该选项无济于事.
如何让调试器公开COM对象的成员?
编辑:当使用VS2010和.NET 3.5时,这适用:
我从github gtfs_SQL_importer复制了以下代码:
cat gtfs_tables.sql \
<(python import_gtfs_to_sql.py path/to/gtfs/data/directory) \
gtfs_tables_makeindexes.sql \
vacuumer.sql \
| psql mydbname
Run Code Online (Sandbox Code Playgroud)
我试图在Windows上运行它,并用cat
等效的windows 替换对UNIX命令的调用,type
这应该与is-there-replacement-for-cat-on-windows类似.
但是,当我执行该代码时,我收到一些错误:
文件名,目录或文件系统的语法是错误的.
所以我试图将管道文件的数量限制为仅将对python的调用和对以下内容的调用结合起来psql
:
type <(C:/python27/python path/to/py-script.py path/to/file-argument) | psql -U myUser -d myDataBase
Run Code Online (Sandbox Code Playgroud)
产生相同的错误.
但是,当我单独执行python脚本时,它按预期工作:
C:/python27/python path/to/py-script.py path/to/file-argument
Run Code Online (Sandbox Code Playgroud)
因此,我假设使用错误导致type
将脚本的结果直接传递给psql
.
有谁知道正确的语法?
编辑:为了确保问题与未找到的文件无关,我使用了命令中所有参数的绝对路径,除了type
和psql
-command(它们都通过%PATH%
-variable 处理).
为什么我们不能使用自定义实现来引发事件,而没有它们可以实现?看到这段代码:
public class Program
{
private EventHandler myEvent;
public event EventHandler MyEvent
{
add { myEvent += value; }
remove { myEvent -= value; }
}
public event EventHandler AnotherEvent;
public static void Main()
{
var target = new Program();
target.MyEvent(null, null); // ERROR CS0079
target.AnotherEvent(null, null); // compiles
}
}
Run Code Online (Sandbox Code Playgroud)
你看到我的班级都宣布了这两个事件.虽然target.AnotherEvent(...)
编译得很好,target.MyEvent(...)
但不是:
Event MyEvent只能出现在+ =或 - =的左侧.
我知道一个事件只是一个带有add-and-remove方法的委托.因此AnotherEvent
编译器将其转换为add-and-remove-method:
private EventHandler _AnotherEvent;
public event EventHandler AnotherEvent
{
add { _AnotherEvent += value; }
remove { …
Run Code Online (Sandbox Code Playgroud) I\xc2\xb4m 使用 SGen 为程序集中的类型创建 XmlSerilaization 程序集。以下是该程序集的简化代码示例:
\n\nnamespace ConsoleApplication1\n{\n public class Program\n {\n public MyNS2.Flurstueck Flurstueck = new MyNS2.Flurstueck();\n }\n}\n\nnamespace ConsoleApplication1.MyNS1\n{\n [XmlRoot("Flurstueck1")]\n public class Flurstueck\n {\n public string kz1 = "kz1";\n }\n}\nnamespace ConsoleApplication1.MyNS2\n{\n [XmlRoot("Flurstueck2")]\n public class Flurstueck\n {\n public string kz2 = "kz2";\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n当我使用该项目进行编译并启用序列化程序集的创建时,我收到“反映类型 ConsoleApplication1.MySN1.Flurstueck 时出错”。显然我们这里有命名冲突,因为类MyNS1.Flurstueck
和MyNS2.Flurstueck
具有相同的名称。这当然可以编译,因为两种类型都有不同的命名空间。创建序列化程序集时失败。
但是,当我手动将该类型序列化到文件中并再次反序列化它(因此无需创建序列化程序集并让序列化及时发生)时,它会起作用:
\n\nXmlSerializer ser = new XmlSerializer(typeof(Program));\nusing (TextWriter writer = new StreamWriter(path))\n{\n ser.Serialize(writer, new Program());\n}\n\nusing (TextReader reader = new StreamReader(path))\n{\n var o = ser.Deserialize(reader);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n我怎样才能让它与 Sgen …
我有一个具有多个布尔(和整数)属性的对象.我想创建一个具有许多不同属性的对象集合,以获得用于测试的良好数据集.
例如
public class A
{
public int value {get; set;} //want to try beetween 0 and 5
public bool foo {get; set;}
public bool bar {get; set;}
public bool boo {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
对于这个例子,我喜欢有一个6*2*2 = 24 elementw的列表,其中value
= foo
0/1/2/3/4/5 ,= true/false,bar
= true/false,但boo
始终为false.
我可以使用24行代码来做到这一点.但是它很多,如果我再增加一个bool,那么它的行数就会增加一倍.
我可能每个属性使用一个循环,但我不认为这是一个有太多嵌套循环的好方法.我也可以通过反思来做到这一点,但我认为这是太多的工作,不是吗?
我认为还有另一种方法可以做得更好,但我找不到它.
我有这个方法:
public IEnumerable<MyType> DoSomething<TResult>(Func<MyType, TResult> func)
where TResult : AnotherType
Run Code Online (Sandbox Code Playgroud)
现在我想要这个方法也出现了IEnumerable<AnotherType>
.所以我写了这个,显然没有编译:
public IEnumerable<MyType> DoSomething<TResult>(Func<MyType, TResult> func)
where TResult : IEnumerable<AnotherType>
Run Code Online (Sandbox Code Playgroud)
我得到编译器错误:
已经声明具有相同签名的成员
我读了具有相同签名的成员,该签名已经定义了不同的类型约束,它们使用另一个返回类型处理成员 但是在我的例子中,我没有区分方法return-type,而是在它的param-list中,它Func<MyType, TResult>
首先Func<IEnumerable<MyType>, TResult>
在第二个和第二个.但是编译器无法处理此问题.
还有另一种方法,而不是第二个例子的另一个方法名称?
c# ×8
linq ×2
arcobjects ×1
codedom ×1
com ×1
eclipse ×1
events ×1
generics ×1
java ×1
jd-eclipse ×1
namespaces ×1
pipeline ×1
python ×1