|
Then I prefer to provide a value; something like this:
public virtual T
ExecuteScalar<T>
(
T IfNull
)
{
you could do similar for TryParse.
|
|
|
|
|
|
Do we actually care, if the value isn't being used?
string badNumericString = "Bogus";
Decimal foo;
if (!Decimal.TryParse (badNumericString, out foo)) foo = 1;
..and if the TryParse don't use the value, it'll probably initialize it with the same value it initializes an empty variable. Since the variable hasn't been set (according to application logic), we can't be sure about the value unless we explicitly set it. (Future versions of .NET might display other behavior)
Bastard Programmer from Hell
|
|
|
|
|
Eddy Vluggen wrote: it'll probably initialize it with the same value it initializes an empty variable
Double checked using Reflector...
public static bool TryParse(string s, out decimal result)
{
return Number.TryParseDecimal(s, NumberStyles.Number, NumberFormatInfo.CurrentInfo, out result);
}
internal static unsafe bool TryParseDecimal(string value, NumberStyles options, NumberFormatInfo numfmt, out decimal result)
{
byte* stackBuffer = stackalloc byte[0x72];
NumberBuffer number = new NumberBuffer(stackBuffer);
result = 0M;
if (!TryStringToNumber(value, options, ref number, numfmt, true))
{
return false;
}
if (!NumberBufferToDecimal(number.PackForNative(), ref result))
{
return false;
}
return true;
}
... so it WILL be zero.
|
|
|
|
|
Eddy Vluggen wrote: Do we actually care
Not particularly, but we care whether or not it does what the documentation says.
|
|
|
|
|
Eddy Vluggen wrote: Do we actually care, if the value isn't being used? It is being used. The example I gave was intentionally limited to focus on the question. In my app, foo (not its real name) is used after the TryParse() executes. Different things happen depending on whether foo is Decimal.MinValue .
/ravi
|
|
|
|
|
That is what the doc[^] says. This entire thread seams to suggest no-one reads or beliefs it.
|
|
|
|
|
Luc Pattyn wrote: no-one reads or beliefs it
Maybe I'm a one-percenter.
My understanding is that all TryParse methods are expected to set the value to zero /null /default(T) when they fail -- so that's what I do when I write a Tryxxx method.
public bool
TryParse
(
string Name
,
out T Value
)
{
bool result = true ;
Value = default(T) ;
public static bool
TryGetValue<T>
(
this object Source
,
out T Value
)
{
bool result = false ;
Value = default(T) ;
|
|
|
|
|
I agree.
|
|
|
|
|
You are right in assuming I didn't read the doc.
/ravi
|
|
|
|
|
|
I think foo would be zero, but that's just a guess. I think Int32.TryParse and Double.TryParse set the out parameter to zero if the parse fails, but I don't recall.
If TryParse fails, I usually set the value to some known default that I can handle - I don't care what TryParse sets it to, especially is MS decides to change it down the road.
The shout of progress is not "Eureka!" it's "Strange... that's not what i expected". - peterchen
|
|
|
|
|
You're absolutely correct.
dybs wrote: If TryParse fails, I usually set the value to some known default that I can handle I agree that's the advisable thing to do.
/ravi
|
|
|
|
|
I need urgent a class in c# that can sort the data from a textfile
For Example I have a file data.txt
AAAAA
BBBBB
CCCCC
AAAAA
BBBBB
and the sort to be like that
AAAAA
AAAAA
BBBBB
BBBBB
CCCCC
please help me I need it so much...thank you
|
|
|
|
|
If it's not homework, just use the sort command.
If it is homework, read all lines into a List and use Sort.
|
|
|
|
|
You already asked this questoin in the Q&A forum.
Don't crosspost please.
|
|
|
|
|
I am developing a Snmp utility in C# which can fetch data from a specified Oid of a device.I am using Snmp version1 packet format.I tested it on localhost and windows server in the network, it is working fine. But it is not working for routers in network.
Snmp service is running on all devices as routers reply for the snmpwalk command from putty.
Is it a packet format issue or anything else?
|
|
|
|
|
Member 7881518 wrote: Is it a packet format issue or anything else?
My guess would be a firewall. What do the routers do to other (similar) tools?
Bastard Programmer from Hell
|
|
|
|
|
it return the value corresponding to specified Oid from router's mib
|
|
|
|
|
Member 7881518 wrote: am using Snmp version1 packet
That doesn't mean much. It is somewhat similar to saying that you are using http (but not specifying anything about the server/client.)
Member 7881518 wrote: I tested it on localhost and windows server in the network,
First that doesn't mean anything unless you are actually testing it against routers.
Second it would need to be tested against the same routers and with the same installed software on them.
Member 7881518 wrote: But it is not working
Meaning what exactly? If you are getting an alarm or not getting a comm error on a query/update then (if you have not suppressed something) then there is no other conclusion but that your test environment and real enviroment are using different SNMP data.
Only way to debug this sort of thing long term it to provide a way to write the raw data to a file so you can look at it.
|
|
|
|
|
Thanks Eddy Vluggen and jschell for your replies.
Actually, this was some authentication issue that has been resolved. The community string they had provided me was not correct.
But now i have a new problem. I am not able to read large data send by router. Actually I am not clear about the concept that how snmp protocol send(response from router) data.
Suppose if the snmp query is to diplay all mib values, then how the router is going to send the result, I mean it will
1)send datagrams packets
2)use stream of data
3)or anything else??
|
|
|
|
|
I am building a C# windows application. I want it so whenever I click the update button in my form the application will Start looking for whether there is a new version avaliable on my Server.
If there is then proceed to update the Software.
How is this usually handled?
|
|
|
|
|
|
So basically the code below just creates an XML document in memory and then parses it and spits the values back out. The question I have is about the IEnumerable<xelement> statements. I never implemented a class that uses the interface, but yet it still works in this code. Does the compiler automagically create a container or something? How does this work? Does this work for all interfaces?
class Program
{
static void Main(string[] args)
{
XDocument employeeDoc =
new XDocument(
new XElement("Employees",
new XElement("Employee",
new XElement("Name" , "Bob Smith"),
new XElement("Phone" , "408-555-1000"),
new XElement("Phone" , "408-555-1001")),
new XElement("Employee",
new XElement("Name", "Sally Jones"),
new XElement("Phone", "415-555-2000"),
new XElement("Phone", "415-555-2001"))
)
);
XElement root = employeeDoc.Element("Employees");
IEnumerable<XElement> employees = root.Elements();
foreach (XElement emp in employees)
{
XElement empNameNode = emp.Element("Name");
Console.WriteLine(empNameNode.Value);
IEnumerable<XElement> empPhones = emp.Elements("Phone");
foreach (XElement phone in empPhones)
{
Console.WriteLine(" {0}", phone.Value);
}
}
}
}
|
|
|
|
|
See these lines..
Quote: IEnumerable<xelement> employees = root.Elements();
foreach (XElement emp in employees)
{
Here you have used foreach loop. SO, the definition says that, you can use foreach loop only on those objects or classes which implement IEnumerable interface. Therefore, in order to loop out all through the elements, you have taken the IEnumerable instance.
hope it helps.
with regards
Karthik Harve
|
|
|
|