Showing posts with label C#. Show all posts
Showing posts with label C#. Show all posts
Thursday, December 30, 2010
Lambda expression common syntax-CSharp
There are multiple ways of expressing lambdas, depending on the exact scenario - some examples:
// simplest form; no types, no brackets
Func f1 = x => 2 * x;
// optional exlicit argument brackets
Func f2 = (x) => 2 * x;
// optional type specification when used with brackets
Func f3 = (int x) => 2 * x;
// multiple arguments require brackets (types optional)
Func f4 = (x, y) => x * y;
// multiple argument with explicit types
Func f5 = (int x, int y) => x * y;
The signature of the lambda must match the signature of the delegate used (whether it is explicit, like above, or implied by the context in things like .Select(cust => cust.Name)
You can use lambdas without arguments by using an empty expression list:
// no arguments
Func f0 = () => 12;
Ideally, the expression on the right hand side is exactly that; a single expression. The compiler can convert this to either a delegate or an Expression tree:
// expression tree
Expression> f6 = (x, y) => x * y;
However; you can also use statement blocks, but this is then only usable as a delegate:
// braces for a statement body
Func f7 = (x, y) => {
int z = x * y;
Console.WriteLine(z);
return z;
};
Note that even though the .NET 4.0 Expression trees support statement bodies, the C# 4.0 compiler doesn't do this for you, so you are still limited to simple Expression trees unless you do it "the hard way"; see my article on InfoQ for more information.
// simplest form; no types, no brackets
Func
// optional exlicit argument brackets
Func
// optional type specification when used with brackets
Func
// multiple arguments require brackets (types optional)
Func
// multiple argument with explicit types
Func
The signature of the lambda must match the signature of the delegate used (whether it is explicit, like above, or implied by the context in things like .Select(cust => cust.Name)
You can use lambdas without arguments by using an empty expression list:
// no arguments
Func
Ideally, the expression on the right hand side is exactly that; a single expression. The compiler can convert this to either a delegate or an Expression tree:
// expression tree
Expression
However; you can also use statement blocks, but this is then only usable as a delegate:
// braces for a statement body
Func
int z = x * y;
Console.WriteLine(z);
return z;
};
Note that even though the .NET 4.0 Expression trees support statement bodies, the C# 4.0 compiler doesn't do this for you, so you are still limited to simple Expression trees unless you do it "the hard way"; see my article on InfoQ for more information.
เขียนโดย
abcomp01
ที่
5:36 PM
0
ความคิดเห็น
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Calculate relative time
const int SECOND = 1;
const int MINUTE = 60 * SECOND;
const int HOUR = 60 * MINUTE;
const int DAY = 24 * HOUR;
const int MONTH = 30 * DAY;
if (delta < 0)
{
return "not yet";
}
if (delta < 1 * MINUTE)
{
return ts.Seconds == 1 ? "one second ago" : ts.Seconds + " seconds ago";
}
if (delta < 2 * MINUTE)
{
return "a minute ago";
}
if (delta < 45 * MINUTE)
{
return ts.Minutes + " minutes ago";
}
if (delta < 90 * MINUTE)
{
return "an hour ago";
}
if (delta < 24 * HOUR)
{
return ts.Hours + " hours ago";
}
if (delta < 48 * HOUR)
{
return "yesterday";
}
if (delta < 30 * DAY)
{
return ts.Days + " days ago";
}
if (delta < 12 * MONTH)
{
int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
return months <= 1 ? "one month ago" : months + " months ago";
}
else
{
int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
return years <= 1 ? "one year ago" : years + " years ago";
}
* 2 hours ago
* 3 days ago
* a month ago
เขียนโดย
abcomp01
ที่
5:35 PM
0
ความคิดเห็น
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Sunday, October 17, 2010
Convert vb to c sharp project to C# 4.0
1. start a new C# project,
2. add the 4 class files that you have,
3. run them each through the VB->c# translator you linked to originally,
4. dump the VB logging stuff and add in log4net
5. turn the Windows Scripting stuff from VB into C# (I think your problem with this is that the translator above is flipping out on the types of WindowsScripting Host stuff)
6. Compile and test.
With luck, this will take you a couple of hours. With bad luck, it depends on what the project actually does and that will determine how long.
I wish you good luck.
If you decide to go this route, be liberal about commenting out huge parts of code and compiling and working on eliminating compiling errors first. I'll try to keep an eye out to help you with any other specific questions that I see come across the front page.
2. add the 4 class files that you have,
3. run them each through the VB->c# translator you linked to originally,
4. dump the VB logging stuff and add in log4net
5. turn the Windows Scripting stuff from VB into C# (I think your problem with this is that the translator above is flipping out on the types of WindowsScripting Host stuff)
6. Compile and test.
With luck, this will take you a couple of hours. With bad luck, it depends on what the project actually does and that will determine how long.
I wish you good luck.
If you decide to go this route, be liberal about commenting out huge parts of code and compiling and working on eliminating compiling errors first. I'll try to keep an eye out to help you with any other specific questions that I see come across the front page.
เขียนโดย
abcomp01
ที่
2:49 AM
0
ความคิดเห็น
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Subscribe to:
Posts (Atom)