这可能是一些人所熟悉的.我有一个包装类Ex
,它用一堆隐式转换和运算符包装表达式树.这是简化版
public class Ex
{
Expression expr;
public Ex(Expression expr)
{
this.expr = expr;
}
public static implicit operator Expression(Ex rhs) { return rhs.expr; }
public static implicit operator Ex(double value)
{ return new Ex(Expression.Constant(value, typeof(double))); }
public static implicit operator Ex(string x)
{ return new Ex(Expression.Parameter(typeof(double), x)); }
public static Ex operator +(Ex left, Ex right)
{
return new Ex(Expression.Add(left, right));
}
public static Ex operator -(Ex rhs)
{
return new Ex(Expression.Negate(rhs));
}
public static Ex operator …
Run Code Online (Sandbox Code Playgroud) 我有一个具有以下属性的类:
Dim pBonds() as string
Private Property Get Bonds() As String
Bonds = pBonds
End Property
Private Property Get Bond(index As Long) As String
Bond = pBonds(index)
End Property
Private Property Let Bond(index As Long, strValue As String)
If index > UBound(pBonds) Then ReDim Preserve pBonds(index)
pBond(index) = strValue
End Property
Run Code Online (Sandbox Code Playgroud)
当我尝试时:
Set o = New CBondBasket
For k = LBound(arr) To UBound(arr)
o.Bond(k) = arr(k)
Next k
Run Code Online (Sandbox Code Playgroud)
我收到错误Method or data member not found
知道那是从哪里来的吗?
做出了改变
现在将它们标记为公共并添加初始化和 byval (给我另一个错误,没有它) …
用泛型来考虑这个声明:
public class BaseNode<TNode> where TNode : BaseNode<TNode>
{
public class Node : BaseNode<Node>
{
public Node() { }
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法Node
从基类外部创建类的实例?我之前使用过这种模式,但总是把派生类留在基类之外.
如果没有编译器错误,您如何编写以下内容?
var obj = new BaseNode<Node>.Node();
// error CS0246: The type or namespace name 'Node' could not be found
Run Code Online (Sandbox Code Playgroud)
我创建了一个不可实例化的类吗?它可以通过反射初始化吗?
我想出的是:
RandomSort()
{
string[] list = { "Alpha", "Beta", "Gamma", ... }
Random rnd = new Random();
string[] list2 = list.OrderBy((x) => rnd.NextDouble()).ToArray();
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方式,也许使用一个Dictionary
或什么?谢谢.
如果我有两个数值数组,例如double[] a, b
,我想生成第三个数组,每个元素都是添加的a
,b
我可以用循环来做
double[] a, b, c
// fill in a, b and initialize c
for(int i=0; i<c.Length; i++)
{
c[i] = a[i] + b[i];
}
Run Code Online (Sandbox Code Playgroud)
所以问题是; 有没有办法用LINQ而不是循环?
PS.假设我已经有了二元运算符Func<double,double,doube> add = (x,y)=>x+y;
我习惯使用以下语法
subroutine CalcA(A,N)
!DEC$ ATTRIBUTES DLLEXPORT :: CALCA
!DEC$ ATTRIBUTES ALIAS:'CalcA' :: CalcA
IMPLICIT NONE
...
end subroutine CalcA
Run Code Online (Sandbox Code Playgroud)
它在.dll中生成导出的函数
所以现在我ISO_C_BINDING
用以下代码尝试新的
subroutine CalcA(A,N) BIND(C, NAME="CalcA")
USE, INTRINSIC :: ISO_C_BINDING
IMPLICIT NONE
...
end subroutine CalcA
Run Code Online (Sandbox Code Playgroud)
但是没有创建导出功能
那我在这里错过了什么?新的如何iso_c_binding
取代已弃用的!DEC$ ATTRIBUTE DLLEXPORT
声明?
PS.我通过VS2010在Win7-64平台上使用英特尔Fortran XE 2013.
就像标题所说,一个单元格A1
包含公式={1,2,3}
,它是一个单元格的有效输入,我可以使用VBA来获取数组的元素.
请注意,Range("A1").Value
返回值1
,但Range("A1").Formula
返回字符串={1,2,3}
.因此,我能想到的唯一方法是解析公式并将值与,
(如CSV行)分开.
在这种情况下,还有其他方法可以在vba中返回值数组.我甚至试图将它作为一个数组读入一个变体,v=Range("A1:A2").Value2
但仅v(1)
包含1
.
我有一个带文本框的winform,我想在它上面绘制一些GDI图形。文本框没有Paint()
要挂钩的事件,因此我认为所有事件都必须在窗体的Paint事件中发生。作为测试,我使用以下命令从原点到文本框内的位置绘制一个矩形:
private void FindForm_Paint(object sender, PaintEventArgs e)
{
using (Pen pen = new Pen(Color.Blue))
{
e.Graphics.DrawRectangle(pen, 0, 0, point.X, point.Y);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行时,先完成绘制,然后在我的线条上方呈现文本框。我想在渲染文本框后绘制线条。
PS。我尚未对该Form.SetStyle()
功能的表单进行任何设置。
有没有办法在最后一个"_"之后得到字符串的部分;
string1 = "A_110_23_09_ABC"
result1 = "ABC"
Run Code Online (Sandbox Code Playgroud)
string2 = "A_110_23_09_ABC_555"
result2 = "555"
Run Code Online (Sandbox Code Playgroud) 过去一小时我一直试图这样做,这让我疯了.我正在尝试使用正确的格式(使用破折号)获取一个Minecraft UUID,但我使用的API以常规格式提供它.
是)我有的:
7a4730f8f948471dbc77f6f71a250f87
适当的格式:
7a4730f8-f948-471d-bc77-f6f71a250f87
我将如何格式化这样的字符串?
我正在创建新模型,该模型的属性之一是 BruttoPrice (可为 null-double 类型),并且我想为该属性分配我的 Item3 (可为 null-double 类型)值,但四舍五入到小数点后两位 - 所以我使用 Math .Round 函数但不起作用
将 item3 分配给 bruttoPrice
var model = new Model
{
BruttoPrice = Math.Round(val.Item3 ?? 0, 2),
};
Run Code Online (Sandbox Code Playgroud)
我的模型输出
我想使用模式匹配来替换多个if
语句,如下所示的方法Select<T>()
。我想使用switch()
上的声明typeof(T)
。
static class Program
{
static void Main(string[] args)
{
var doc = new Document();
IWire select = doc.Select<IWire>();
}
public static T Select<T>(this Document document) where T : class, IGeneric
{
var t = typeof(T);
if (t.IsAssignableTo(typeof(IWire)))
{
return document.SelectEntity(EntityType.Wire) as T;
}
if (t.IsAssignableTo(typeof(ISolid)))
{
return document.SelectEntity(EntityType.Solid) as T;
}
if (t.IsAssignableTo(typeof(ISurface)))
{
return document.SelectEntity(EntityType.Surface) as T;
}
// imagine a lot of if statements here
return null;
}
} …
Run Code Online (Sandbox Code Playgroud) 这是我的代码来解决这个问题。 错误详细信息:索引超出范围。必须为非负数且小于集合的大小。
List<string> mylist = new List<string>();
mylist.Add("Val1");
mylist.Add("Val2");
mylist.Add("Val3");
int i = 1;
int totalLenngth = mylist.Count;
foreach (var item in mylist)
{
if (i == totalLenngth) {
//mylist.Remove(bro);
mylist.RemoveAt(i);
mylist.Add("Val4");
}
i++;
}
Run Code Online (Sandbox Code Playgroud)