|
Hi Experts
i working With VS 2005.
i am reading Some Article from internet about C#.NET
they use ? in passing Parameter in method can u explain what is the use
of ? inside the method
e.g
private void Abc(int? a,int? b)
{
}
and it also working what i am not understand why use the ? inside the
method
Dinesh Sharma
|
|
|
|
|
These are Nullable types[^], which can be represented by null values (i.e. they have no value) as well as the normal range of valid values for the type. For an int type that represents the range from the smallest negative to the largest positive value and also null; but note that the null value is not the same as zero.
It's time for a new signature.
|
|
|
|
|
Sharma Dinesh Kumar wrote: private void Abc(int? a,int? b)
Declaration int? is equivalent to System.Nullable <int > a .
Nullable types allow to store even null value to a value type but nullable variable.Read MS guidelines about this these types ^.
Life is a stage and we are all actors!
modified on Tuesday, May 25, 2010 4:04 AM
|
|
|
|
|
thank u for answare
Can i also Declare DateTime? as nullable so i can save null in database in sql server 2005 if date is blank.
|
|
|
|
|
Sharma Dinesh Kumar wrote: Can i also Declare DateTime
According to the MS documentation yes.
Sharma Dinesh Kumar wrote: as nullable so i can save null in database in sql server 2005 if date is blank.
I suppose not.SQL NULL value matches to System.DBNull.Value not to C# null reference.So you should replace null with System.DBNull.Value when passing commands to SQL Server like the sample bellow.
void Add(int? value)
{
command.Parameters.Add("@foo").Value = (object)value ?? DBNull.Value;
}
Life is a stage and we are all actors!
|
|
|
|
|
Well, to my knowledge you don't have to. Using System.DBNull.Value is required when you retrieve data from nullable column in database. But if you pass parameter through SqlCommand.Parameters, .NET does some magic and sends data, that SQL server understands as DBNull value.
However, when you retrieve data from database, the value in SqlDataReader is DBNull.Value, and it's of course not the same as null in C#.
|
|
|
|
|
lukasz_nowakowski wrote: .NET does some magic and sends data, that SQL server understands as DBNull value.
Very interesting.Are you sure that it's universal and works with older .NET versions like 1.1 .
Life is a stage and we are all actors!
|
|
|
|
|
Well, I have no idea. I never developed in .NET 1.1. But you can try and pass null to some procedure and see what happens. I don't see why shouldn't it work...
|
|
|
|
|
Official ADO.NET documentation here said:
When you send a null parameter value to the server, the user must specify DBNull, not null.
So automatic conversion from null to DBNull.Value isn't even documented.
Life is a stage and we are all actors!
|
|
|
|
|
That's very very strange. I don't remember using DBNull... and I have procedures (mostly for searching tables), that take some parameters, that can be null, and they work. Don't know why. But when I think about it, I guess maybe .NET just doesn't send parameter, that has a value of null and sends parameter that has DBNull. Well, I wouldn't find out, cause I always interact with database with stored procedures and this feature doesn't affect me. But if you use prepared commands (or what they call them), it can be an issue. Maybe someone has some free time to check it (cause I'm quite busy right now). If not, I'll try to check it later today and write what I found out here.
|
|
|
|
|
? is used for nullable types when used like this.
This means a null or an integer value can be passed into the method.
My signature "sucks" today
|
|
|
|
|
i have a login form in my windows application, i want to persist user name value when user login into the application back.
so How to persist user name value in textbox in windows application like web application?
|
|
|
|
|
There are mainly two ways to do so.
1. You can store user name in app.config file programmatically and then
you can access it from there whenever you required.
2. You can store it in custom user class object and access it from the
object itself whenever you require it.
[Either you make property or variable in custom class to store the value]
HTH
Jinal Desai - LIVE
Experience is mother of sage....
|
|
|
|
|
Hi,
I want to build REST based services and for that would like to use Web Project template in my Visual Studio. How can i add that any options need to be enabled ?
|
|
|
|
|
|
I have a hierarchy of classes, all of which implement this interface:
public class IRuleObject
{
int Sequence { get; set; }
}
Here's the top level class:
[Serializable]
[XmlRoot("Group")]
public class RuleGroup : IRuleObject
{
[XmlAttribute("ID")]
public int GroupID { get; set; }
[XmlAttribute("Sequence")]
public int Sequence { get; set; }
[XmlAttribute("Name")]
public string GroupName { get; set; }
[XmlAttribute("Active")]
public bool Active { get; set; }
[XmlElement("Rules")]
public List<Rule> Rules { get; set; }
}
You can see where it implements the interface.
When I attempt to serialize I get
Type 'RulesEngine.IRuleObject' in Assembly 'RulesEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
If I remove the interface, all works well. How do I set this up so i can use the interface & still serialize the
classes?
Everything makes sense in someone's mind
|
|
|
|
|
I'm just curious as I'm not sure this is the problem or if this will work, but did you try adding the Serializable keyword to the interface?
|
|
|
|
|
LOL - I figured that out right after I posted.
I didn't think that you could mark an interface as serializable.
Everything makes sense in someone's mind
|
|
|
|
|
it always takes me several iterations to get Serialization to not throw errors...and then a few more iterations to actually get it to output it the way I'm expecting it to.
It's helpful, but it can sure be a pain...especially with nested classes, inherited classes, and apparently interfaces as well.
|
|
|
|
|
Agreed.
Actually I first tried to base all my classes of an abstract, but that's nearly impossible with serialization, so
I decided that an interface would work.
In either case, you're right. It's a PITA to set up but very useful. On top of all this, I'm base64 encoding
the file after it's serialized. Makes it a bit tough to open it & look at it.
Everything makes sense in someone's mind
|
|
|
|
|
Kevin Marois wrote: Makes it a bit tough to open it & look at it.
If you prefer the data isn't human readable, I recommend you use binary serialization. It's also a lot faster (which may not be an issue for you, but you kill two birds with one stone).
/ravi
|
|
|
|
|
Hi guys,
Last week, I rolled an app out to production and wouldn't you know, today someone comes to tell me "We're not going to be able to use Port 20 for FTP. Production Management has a separate data port for us." Reasoning is irrelevant for this discussion, but that left me trying to surgically modify my Upload code to allow for a different port to be specified. It ended up being easy, but the way it works kind of left me scratching my head.
For anyone that needs to replicate this, all you have to do is specify your port number after the host name. Really easy. ...But, the thing that puzzled me is that this worked while I had the UsePassive property of my ftpWebRequest set to true (I tested before I had gone in and checked the request's properties)
Since I had specified for the ftpwebrequest to sent a PASV command to the server, why was I able to dictate to the server which port number it was going to be receiving data on?
RFC 959 Section 3.2 states that the client may specify an arbitrary port via a PORT command, but I did not issue a PORT command...I issued a PASV command. For this to work, there must be something else going on under the covers of FtpWebRequest.
Can anyone shed light onto why I was able to specify a port while in Passive mode?
"I need build Skynet. Plz send code"
|
|
|
|
|
Hi all,
I am a beginner in C# and .Net
I have been reading the Wrox Visual C# 2008 book, and I don't understand and see the use of Iterators.
This might sound a bit dumb but I need to ask because I don't understand at all.
I had a look at MSDN but I am still feeling unhappy!
So here is what I have understood so far:
- foreach loop implements IEnumerable Interface
- You implement IEnumerable for a class member and IEnumerator for a class
- With yield keyword, you don't need to implement the members IEnumerable (Current, MoveNext(),...)
Is it correct?
And what is the use of Iterators? What is the difference with the foreach loop?
Could someone give me some insight please?
Bon_chan
|
|
|
|
|
bon_chan wrote: Is it correct?
No, all of that is wrong. I'll try to keep it simple, which may make it slightly incorrect. Here you go:
Enumerator, iterator and enumerable are pretty much the same. They offer an abstracted way to enumerate items in a collection, which means getting access to them, one after the other, in sequence.
foreach(someType varName in someCollection) does not implement IEnumerator nor IEnumerable; it requires someCollection to implement IEnumerable, as it will use an enumerator on someCollection and loop its way through it; you could do that yourself, based on a for loop and an explicit call to someCollection.GetEnumerator().
yield is a keyword that got introduced later; it helps in enumerating virtual collections, i.e. collections that do not really exist as a set of elements all available concurrently. You should not worry about it at all, until you fully understand everything else about enumerators.
Summary: it is all about enumerating; you don't really need it; it can come in handy; it can be virtualized. Take it one step at a time.
PS: Wrox books have good reputation; you should study some more. And experiment a bit too.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
bon_chan wrote: - foreach loop implements IEnumerable Interface
Foreach is just an instruction. It does not implement anything.
bon_chan wrote: You implement IEnumerable for a class member and IEnumerator for a class
No. See here.
bon_chan wrote: With yield keyword, you don't need to implement the members IEnumerable (Current, MoveNext(),...)
Yield is just a keyword. It has nothing to do with whether you need to implement some IEnumerable methods or not.
My signature "sucks" today
|
|
|
|