如何将参数传递给Action<T>?代码示例应该突出我想要实现的目标.对不起,这有点长.
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo();
foo.GetParams(x => x.Bar(7, "hello"));
}
}
class Foo
{
public void Bar(int val, string thing) { }
}
static class Ex
{
public static object[] GetParams<T>(this T obj, Action<T> action)
{
// Return new object[]{7, "hello"}
}
}
Run Code Online (Sandbox Code Playgroud)
看起来有用的唯一选项是GetInvocationList(),Method和Target.但它们似乎都没有包含我所追求的数据(我认为这是因为我宣布了Action的方式).谢谢
编辑:这不是我想要的类型,它是实际值 - 如注释的代码中所述.
无论时间是什么时候,我如何保存日期时间,没有时间或最好带有12:00的时间戳?
我不想使用.ToString("dd/MM/yyyy");,因为它会打开很多新的可能错误.
我是新手,但我想为微控制器ARM M3 STM32F103ZD开发C#.net Micro应用程序.
我找到了开发套件STM32F103ZE ARM-CM3 Board,链接http://www.embedinfo.com/en/list.asp?id=31
任何人都可以告诉我,如果有可能在这个套件上开发C#.net Micro应用程序.
谢谢
只是想知道是否有一种简单的方法来了解Tuple类中包含多少元素
例如.
var a = new Tuple<int,int>(1,2);
Run Code Online (Sandbox Code Playgroud)
但有多少元素?也许我们不关心我们是否尝试使用as关键字进行投射
var a1 = a as Tuple<int>
if(a1!=null)
var a2 = a as Tuple<int,int>
if(a2!=null)
Run Code Online (Sandbox Code Playgroud)
稍等反馈后.有很多人使用元组吗?
我需要一个功能来验证输入的日期.输入日期是否格式正确.我浏览了网页并得到了正则表达式.它的工作正常,除非你输入12/12/YYYY(在任何一年)它显示错误,说它不是一个有效的日期.
bool IsDate(string date)
{
Match dobMatch = Regex.Match(date, @"^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$");
if (!dobMatch.Success)
{return true;}
else
{return false;}
}
Run Code Online (Sandbox Code Playgroud)
一世
给定一个字符串,例如500个字符,我想在索引400和索引430之间选择一个字符串.你如何编写这样的函数?
谢谢
我一直在努力尝试初始化一维数组而不知道它的大小,但是没有得到它; 请告诉我如何根据C#中的要求声明一个大小会动态增加的数组.
我的意思是,想要做这样的事情
class A
{
int[] myarray;
int i=0;
while(i<5)
{
myarray[i]==n;
n=n%10;
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
请帮忙 !!!
我有一个叫做PropertyPets的多对多表结构.它包含一个双主键,包括PropertyID(来自Property表)和一个或多个PetID(来自Pet表).
接下来我有一个搜索屏幕,人们可以从jquery多选下拉列表中选择多个宠物.让我们说有人选择狗和猫.
现在,我希望能够在多对多的表PropertyPets中返回包含BOTH狗和猫的所有属性.我正在尝试使用Linq to Sql.
我查看了Contains子句,但它似乎不符合我的要求:
var result = properties.Where(p => search.PetType.Contains(p.PropertyPets));
Run Code Online (Sandbox Code Playgroud)
这里,search.PetType是Dog和Cat的Id的int []数组(在多选择下拉列表中选择).问题首先,Contains需要一个字符串而不是PropertyPet类型的IEnumerable.其次,我需要找到同时拥有狗和猫的属性,而不仅仅是包含其中一个或另一个.
谢谢你的任何指示.
我正在为嵌入式设备开发一些固件,该设备使用16位PIC,工作速率为40 MIPS,并以C编程.系统将控制两个步进电机的位置,并始终保持每个电机的步进位置.每个电机的最大位置约为125000步,因此我不能使用16位整数来跟踪位置.我必须使用32位无符号整数(DWORD).电机以每秒1000步的速度移动,我设计了固件,以便在定时器ISR中处理步骤.计时器ISR执行以下操作:
1)将一个电机的当前位置与目标位置进行比较,如果它们是相同的设置,则isMoving标志为false并返回.如果它们不同,则将isMoving标志设置为true.
2)如果目标位置大于当前位置,向前移动一步,然后增加当前位置.
3)如果目标位置小于当前位置,向后移动一步,然后减小当前位置.
这是代码:
void _ISR _NOPSV _T4Interrupt(void)
{
static char StepperIndex1 = 'A';
if(Device1.statusStr.CurrentPosition == Device1.statusStr.TargetPosition)
{
Device1.statusStr.IsMoving = 0;
// Do Nothing
}
else if (Device1.statusStr.CurrentPosition > Device1.statusStr.TargetPosition)
{
switch (StepperIndex1) // MOVE OUT
{
case 'A':
SetMotor1PosB();
StepperIndex1 = 'B';
break;
case 'B':
SetMotor1PosC();
StepperIndex1 = 'C';
break;
case 'C':
SetMotor1PosD();
StepperIndex1 = 'D';
break;
case 'D':
default:
SetMotor1PosA();
StepperIndex1 = 'A';
break;
}
Device1.statusStr.CurrentPosition--;
Device1.statusStr.IsMoving = 1;
}
else
{
switch (StepperIndex1) // MOVE …Run Code Online (Sandbox Code Playgroud) From r In ReceiptLines
Where
r.RECEIPT.RECEIPTDATE >= _reportStartDate
And r.RECEIPT.RECEIPTDATE <= _reportEndDate
Let amount = r.QUANTITY * r.PRICE
Let discount = r.RECEIPTDISCOUNTs.Sum(Function(d) d.DISCOUNT)
where discount > 0
Group By Department = r.ITEMSTYLE.ITEM.CATEGORY.DEPARTMENT.DEPARTMENTNAME
Into Sales = Sum(amount - discount),
Average = Average(amount - discount),
Count = Count()
Run Code Online (Sandbox Code Playgroud)
我从ReceiptLine,Receipt,ReceiptDiscount表中获取所有部门及其销售额,平均数.我面临的问题是,如果我删除折扣> 0,我得到null异常.但如果我把它包括在内,那么我只能得到有折扣的销售.我如何编写使所有销售额减少折扣的查询(如果有的话).任何帮助都非常感谢.
c# ×8
.net ×3
linq ×2
16-bit ×1
32-bit ×1
action ×1
c ×1
datetime ×1
generics ×1
linq-to-sql ×1
performance ×1
pic ×1
reflection ×1
regex ×1
vb.net ×1