小编Joe*_*Joe的帖子

在两个列表中应用运算符的C#-idiomatic方法是什么?

我习惯这样做(来自其他语言):

 a = 1, 2, 3;
 b = 5, 1, 2;

 c = a * b;  // c = 5, 2, 6
Run Code Online (Sandbox Code Playgroud)

这需要两个大小相等的列表,并将一个函数应用于其成员,一次一个,以获取结果列表.它可以是一个像乘法(上面)或更复杂的函数一样简单的函数:

 c = b>a ? b-a : 0;  // c = 4, 0, 0
Run Code Online (Sandbox Code Playgroud)

我可以想到在C#中使用几种不同的方法,但我不确定C#训练程序员是如何做到这一点的.在C#世界中进行此操作的正确方法是什么?

(我要问的唯一部分是在哪里 c = f(a,b).我熟悉创建列表和访问它们的元素.)

c# list

61
推荐指数
4
解决办法
2677
查看次数

CSS列中断?

我一直在尝试CSS列,但我无法休息工作.这是迄今为止的CSS:

#container { 
    width: 500px;
    column-count: 3;
    -moz-column-count: 3;
    -webkit-column-count: 3;
} 
h1 {
    break-after: always;
    -moz-column-break-after: always;
    -webkit-column-break-after: always;
}
Run Code Online (Sandbox Code Playgroud)

这是相关的HTML:

<div id="container">
    <h1>The header of the first column</h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    <p>Maecenas interdum mattis leo, id vehicula sapien ultricies et.</p>
    <p>Donec orci nunc, rhoncus ut convallis a, pretium quis elit.</p>
    <p>Aenean vulputate vulputate bibendum.</p>
    <p>Fusce imperdiet velit quis diam fermentum ut volutpat ipsum convallis.</p>
</div>
Run Code Online (Sandbox Code Playgroud)

不管我做break-after: avoid,break-after: always,break-before: …

html css

38
推荐指数
3
解决办法
5万
查看次数

这件大事复杂吗?或这个?或这个?

假设我正在使用类的对象thing.我得到这个对象的方式有点罗嗦:

 BigObjectThing.Uncle.PreferredInputStream.NthRelative(5)
Run Code Online (Sandbox Code Playgroud)

我想看看这thing是否等于xyz.写这个的天真方式可能是:

 BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == x ||
 BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == y ||
 BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == z
Run Code Online (Sandbox Code Playgroud)

在某些语言中,我可以这样写:

 BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == x |= y |= z
Run Code Online (Sandbox Code Playgroud)

但C#不允许这样做.

是否有一种C#-idiomatic方法将此测试编写为单个表达式

c# idiomatic operators

26
推荐指数
4
解决办法
2603
查看次数

按属性值对对象列表进行排序

我有一份城市名单.

 List<City> cities;
Run Code Online (Sandbox Code Playgroud)

我想按人口排序.我想象的代码是这样的:

 cities.Sort(x => x.population);
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我应该如何排序这个清单?

c#

23
推荐指数
3
解决办法
6万
查看次数

没有输入参数的匿名函数

我试图弄清楚C#的匿名函数的语法,对我来说没有意义.为什么这是有效的

 Func<string, string> f = x => { return "Hello, world!"; };
Run Code Online (Sandbox Code Playgroud)

但这不是?

 Func<string> g = { return "Hello, world!"; };
Run Code Online (Sandbox Code Playgroud)

c# anonymous-function

12
推荐指数
1
解决办法
9116
查看次数

如何为控制台应用程序创建资源文件?

我正在尝试在控制台应用程序中使用嵌入式资源,但显然控制台应用程序不会自动附带资源文件.如何为我的控制台应用程序创建资源文件?

c# console-application embedded-resource

11
推荐指数
3
解决办法
1万
查看次数

Excel VBA:获取单元格的值,与单元格的格式无关

在Excel VBA中,Range("A1").Value应返回工作表上范围A1的基础值.但是如果单元格格式化为Accounting,我会得到不同的值.

如何获得单元格的实际基础价值?

工作表

创建一个新文档,在单元格中输入以下值:

  • A1:0.00001
  • A2:= A1
  • A3:= A1 = A2

正如您所期望的那样,A3会产生TRUE.现在使用2个小数位将A2的格式更改为Accounting.A2现在读取$ 0.00,但基础值仍然存在0.00001,因此A3仍然存在TRUE.

VBA

制作一个新模块并添加以下功能:

Function f(addr As String)
    f = Range(addr).Value
End Function
Run Code Online (Sandbox Code Playgroud)

如您所见,这只是使用对象的Value方法获取范围的值Range.

工作表

回到工作表.输入以下值:

  • B1:= f("A1")
  • B2:= f("A2")
  • B3:= B1 = B2

A1并且A2有相同的基本价值,但B1B2没有,即使它们都计算使用Value的方法A1A2.

在表达式A3(=A1=A2)的访问的实际的基础值A1A2.如何在VBA中访问这些值?

excel vba

10
推荐指数
1
解决办法
3万
查看次数

异常的堆栈跟踪不会显示抛出异常的位置

通常,当我抛出一个异常,抓住它,并打印出堆栈跟踪,我去看看那里的异常被抛出调用,导致呼叫,导致通话的是,等回根整个计划.

现在它只显示异常被捕获的调用,而不是它被抛出的位置.我无法弄清楚改变了什么导致了这一点.这是我的计划:

using System;

class foo {
    static void Main(string[] args) {
        try { f(); }
        catch (Exception e) { Console.WriteLine(e.StackTrace); }
    }
    static void f() { g(); }
    static void g() { throw new Exception(); }
}
Run Code Online (Sandbox Code Playgroud)

以下是打印出来的内容:

at foo.Main(String[] args) in C:\Projects\test\root.cs:line 5
Run Code Online (Sandbox Code Playgroud)

我的期望是这样的:

at foo.g...
at foo.f...
at foo.Main...
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# exception

8
推荐指数
2
解决办法
4648
查看次数

Excel VBA中的数组函数

我在VBA中有一个生成字符串数组的函数.从另一个VBA函数调用它时工作正常,但从工作表调用时则不行.

以下是它应该如何使用:

  • 选择A1:A3
  • 写在公式栏中=Test(),然后点击Ctrl-Shift-Enter使其成为一个数组函数
  • A1应该包含A,A2应该包含B,而A3应该包含C

当我实际尝试这个时,它会放入A数组的所有三个单元格.如何将返回的数据Test输入到阵列的不同单元格中?


对于那些想要看到它的人来说,这是函数的代码.请记住,从其他函数调用时,该函数可以正常工作.

Function Test() As String()
    Dim a(1 To 3) As String
    a(1) = "A"
    a(2) = "B"
    a(3) = "C"
    Test = a
End Function
Run Code Online (Sandbox Code Playgroud)

arrays excel vba user-defined-functions

8
推荐指数
1
解决办法
2万
查看次数

Excel是否评估提供给IF函数的两个结果参数?

Excel的if函数有三个参数,一个条件,一个if-true值和一个if-false值.Excel是否计算出所有三个参数的值,或者它是否只计算出条件的值和相应的结果?

澄清:我不知道什么是结果if会,我想知道它是否计算的所有参数计算函数的结果前的值.

这相当于询问if函数是否使用惰性或严格评估.例如,以下伪代码:

x = 5;
print x>2 ? "Bigger" : "Smaller" + 1/0
Run Code Online (Sandbox Code Playgroud)

会在完全严格评估的语言中抛出除零异常,因为它会评估1/0,即使?:操作员不需要结果.

在惰性评估语言中,?:操作员在评估x>2要评估的表达式之前会进行评估.

问题是在Excel中,1/0产生一个#DIV/0!可以存在于表达式中的合法值(恰好是).因此,简单地调用=if(true,1,1/0)不会显示Excel是否正在评估1/0.

excel if-statement lazy-evaluation

8
推荐指数
2
解决办法
5752
查看次数